package com.wontube.core.plugin;

import com.wontube.core.remote.IHandler;

/**
 * @author yuechao 
 * 
 * 处理客户端请求过程的系统插件
 * 
 */
public interface IPlugin {
	/**
	 * 获取优先级。值越小，越先执行
	 * 
	 * @return
	 */
	float getPriority();

	/**
	 * 处理请求前执行某些动作。如果失败，则抛出异常或者返回false
	 * 
	 * @param handler
	 */
	boolean begin(IHandler handler) throws Exception;

	/**
	 * 处理请求成功后执行某些动作
	 * 
	 * @param context
	 * @param request
	 * @throws Exception
	 */
	void commit(IHandler handler) throws Exception;

	/**
	 * 处理请求后执行某些动作
	 * 
	 * @param context
	 * @param request
	 */
	void end(IHandler handler);
}
